package org.lanyu.springainovel.novel.dto;

import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Min;
import javax.validation.constraints.Max;

/**
 * 生成章节细纲请求DTO
 */
@Data
@Schema(description = "生成章节细纲请求")
public class ChapterOutlineGenerationRequest {
    
    /**
     * 书籍ID
     */
    @NotNull(message = "书籍ID不能为空")
    @Schema(description = "书籍ID", required = true)
    private Long bookId;
    
    /**
     * 开始章节号（非必填，未提供时自动从最新章节的下一章开始）
     */
    @Min(value = 1, message = "开始章节号必须大于0")
    @Schema(description = "开始章节号（非必填，未提供时自动从最新章节的下一章开始）", example = "1")
    private Integer startChapterNumber;
    
    /**
     * 要生成的章节数量
     */
    @NotNull(message = "生成章节数量不能为空")
    @Min(value = 1, message = "生成章节数量必须大于0")
    @Max(value = 20, message = "一次最多生成20个章节")
    @Schema(description = "要生成的章节数量", required = true, example = "5")
    private Integer chapterCount;
    
    /**
     * 对话模型ID
     */
    @NotNull(message = "对话模型ID不能为空")
    @Schema(description = "对话模型ID", required = true)
    private Long modelId;
    
    /**
     * 生成细纲的提示词模板ID
     */
    @Schema(description = "生成细纲的提示词模板ID")
    private Long promptTemplateId;
}